#import <Foundation/Foundation.h>

typedef NS_ENUM(NSUInteger, LFXCatSwitchLevel) {
    LFXCatSwitchLevel0, // 全部禁止
    LFXCatSwitchLevel1, // 走白名单
    LFXCatSwitchLevel2  // 全部上传
};

@protocol JVMonitorConfigDelegate <NSObject>

@required

/**
 *  应用名
 */
- (NSString *)appName;

/**
 *  cat 白名单
 */
- (NSArray *)whitelist;

/** 上传开关 */
- (LFXCatSwitchLevel)catUploadSwitchLevel;

/** 上传地址 */
- (NSString *)catRemoteAddress;

/** 后门 */
- (BOOL)catBackDoor;

/**
 *  HTTP成功的code
 *  200 401 403 423 555
 */
- (NSSet<NSString *> *)httpSuccessCodes;

/**
 *  response返回数据结构code对应的key
 *  lufax:code
 */
- (NSSet<NSString *> *)serverResponseCode;

/**
 *  response返回数据结构subcode对应的key
 *  lufax:subcode
 */
- (NSSet<NSString *> *)serverResponseSubCode;

/**
 *  response返回数据结构message对应的key
 *  lufax:message
 */
- (NSSet<NSString *> *)serverResponseMessage;

-(NSString*)clientId;

@end

@interface JVMonitorConfig : NSObject

// 网络请求公共Headers
@property (nonatomic, strong, readonly) id<JVMonitorConfigDelegate> monitorConfigDelegate;

+ (JVMonitorConfig *)sharedInstance;

- (void)setMonitorConfig:(id<JVMonitorConfigDelegate>)setmonitorConfig;


@end
